package com.tiyunge.system.service.impl;

import java.util.List;

import com.tiyunge.system.domain.SysGradeOption;
import com.tiyunge.system.mapper.SysGradeOptionMapper;
import com.tiyunge.system.service.ISysGradeOptionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.tiyunge.common.annotation.DataSource;
import com.tiyunge.common.enums.DataSourceType;
import com.tiyunge.common.constant.UserConstants;
import com.tiyunge.common.utils.StringUtils;

/**
 * 年级选项 服务层实现
 *
 * @author yejiayu
 */
@Service
public class SysGradeOptionServiceImpl implements ISysGradeOptionService
{
    @Autowired
    private SysGradeOptionMapper gradeOptionMapper;

    /**
     * 查询年级选项信息
     *
     * @param id 年级选项ID
     * @return 年级选项信息
     */
    @Override
    @DataSource(DataSourceType.MASTER)
    public SysGradeOption selectGradeOptionById(Long id)
    {
        return gradeOptionMapper.selectGradeOptionById(id);
    }

    /**
     * 通过年级编码查询年级选项
     *
     * @param gradeCode 年级编码
     * @return 年级选项信息
     */
    @Override
    public SysGradeOption selectGradeOptionByCode(String gradeCode)
    {
        return gradeOptionMapper.selectGradeOptionByCode(gradeCode);
    }

    /**
     * 查询年级选项列表
     *
     * @param gradeOption 年级选项信息
     * @return 年级选项集合
     */
    @Override
    public List<SysGradeOption> selectGradeOptionList(SysGradeOption gradeOption)
    {
        return gradeOptionMapper.selectGradeOptionList(gradeOption);
    }

    /**
     * 查询前台年级选项列表（只查询启用状态的）
     *
     * @return 年级选项集合
     */
    @Override
    public List<SysGradeOption> selectGradeOptionListForFront()
    {
        return gradeOptionMapper.selectGradeOptionListForFront();
    }

    /**
     * 新增年级选项
     *
     * @param gradeOption 年级选项信息
     * @return 结果
     */
    @Override
    public int insertGradeOption(SysGradeOption gradeOption)
    {
        // 如果排序为空，设置为0
        if (gradeOption.getDisplayOrder() == null)
        {
            gradeOption.setDisplayOrder(0);
        }
        // 如果状态为空，设置为启用状态
        if (gradeOption.getIsActive() == null)
        {
            gradeOption.setIsActive(1);
        }
        return gradeOptionMapper.insertGradeOption(gradeOption);
    }

    /**
     * 修改年级选项
     *
     * @param gradeOption 年级选项信息
     * @return 结果
     */
    @Override
    public int updateGradeOption(SysGradeOption gradeOption)
    {
        return gradeOptionMapper.updateGradeOption(gradeOption);
    }

    /**
     * 批量删除年级选项信息
     *
     * @param ids 需要删除的年级选项ID
     */
    @Override
    public void deleteGradeOptionByIds(Long[] ids)
    {
        for (Long id : ids)
        {
            gradeOptionMapper.deleteGradeOptionById(id);
        }
    }

    /**
     * 删除年级选项信息
     *
     * @param id 年级选项ID
     * @return 结果
     */
    @Override
    public int deleteGradeOptionById(Long id)
    {
        return gradeOptionMapper.deleteGradeOptionById(id);
    }

    /**
     * 校验年级编码是否唯一
     *
     * @param gradeOption 年级选项信息
     * @return 结果
     */
    @Override
    public boolean checkGradeCodeUnique(SysGradeOption gradeOption)
    {
        Long id = StringUtils.isNull(gradeOption.getId()) ? -1L : gradeOption.getId();
        SysGradeOption info = gradeOptionMapper.selectGradeOptionByCode(gradeOption.getGradeCode());
        if (StringUtils.isNotNull(info) && info.getId().longValue() != id.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }
}